#define BRSZ 2*sizeof(real_t)
void __bitrev( real_t *arr, const size_t size, const size_t n )
{
	switch(size)
	{
	case 0:
	case 1:
	case 2:
	break;
	case 4:
		core::bswap<BRSZ>(&arr[   3], &arr[   5]);
	return;
	case 8:
		core::bswap<BRSZ>(&arr[   3], &arr[   9]);
		core::bswap<BRSZ>(&arr[   7], &arr[  13]);
	return;
	case 16:
		core::bswap<BRSZ>(&arr[   3], &arr[  17]);
		core::bswap<BRSZ>(&arr[   5], &arr[   9]);
		core::bswap<BRSZ>(&arr[   7], &arr[  25]);
		core::bswap<BRSZ>(&arr[  11], &arr[  21]);
		core::bswap<BRSZ>(&arr[  15], &arr[  29]);
		core::bswap<BRSZ>(&arr[  23], &arr[  27]);
	return;
	case 32:
		core::bswap<BRSZ>(&arr[   3], &arr[  33]);
		core::bswap<BRSZ>(&arr[   5], &arr[  17]);
		core::bswap<BRSZ>(&arr[   7], &arr[  49]);
		core::bswap<BRSZ>(&arr[  11], &arr[  41]);
		core::bswap<BRSZ>(&arr[  13], &arr[  25]);
		core::bswap<BRSZ>(&arr[  15], &arr[  57]);
		core::bswap<BRSZ>(&arr[  19], &arr[  37]);
		core::bswap<BRSZ>(&arr[  23], &arr[  53]);
		core::bswap<BRSZ>(&arr[  27], &arr[  45]);
		core::bswap<BRSZ>(&arr[  31], &arr[  61]);
		core::bswap<BRSZ>(&arr[  39], &arr[  51]);
		core::bswap<BRSZ>(&arr[  47], &arr[  59]);
	return;
	case 64:
		core::bswap<BRSZ>(&arr[   3], &arr[  65]);
		core::bswap<BRSZ>(&arr[   5], &arr[  33]);
		core::bswap<BRSZ>(&arr[   7], &arr[  97]);
		core::bswap<BRSZ>(&arr[   9], &arr[  17]);
		core::bswap<BRSZ>(&arr[  11], &arr[  81]);
		core::bswap<BRSZ>(&arr[  13], &arr[  49]);
		core::bswap<BRSZ>(&arr[  15], &arr[ 113]);
		core::bswap<BRSZ>(&arr[  19], &arr[  73]);
		core::bswap<BRSZ>(&arr[  21], &arr[  41]);
		core::bswap<BRSZ>(&arr[  23], &arr[ 105]);
		core::bswap<BRSZ>(&arr[  27], &arr[  89]);
		core::bswap<BRSZ>(&arr[  29], &arr[  57]);
		core::bswap<BRSZ>(&arr[  31], &arr[ 121]);
		core::bswap<BRSZ>(&arr[  35], &arr[  69]);
		core::bswap<BRSZ>(&arr[  39], &arr[ 101]);
		core::bswap<BRSZ>(&arr[  43], &arr[  85]);
		core::bswap<BRSZ>(&arr[  45], &arr[  53]);
		core::bswap<BRSZ>(&arr[  47], &arr[ 117]);
		core::bswap<BRSZ>(&arr[  51], &arr[  77]);
		core::bswap<BRSZ>(&arr[  55], &arr[ 109]);
		core::bswap<BRSZ>(&arr[  59], &arr[  93]);
		core::bswap<BRSZ>(&arr[  63], &arr[ 125]);
		core::bswap<BRSZ>(&arr[  71], &arr[  99]);
		core::bswap<BRSZ>(&arr[  75], &arr[  83]);
		core::bswap<BRSZ>(&arr[  79], &arr[ 115]);
		core::bswap<BRSZ>(&arr[  87], &arr[ 107]);
		core::bswap<BRSZ>(&arr[  95], &arr[ 123]);
		core::bswap<BRSZ>(&arr[ 111], &arr[ 119]);
	return;
	case 128:
		core::bswap<BRSZ>(&arr[   3], &arr[ 129]);
		core::bswap<BRSZ>(&arr[   5], &arr[  65]);
		core::bswap<BRSZ>(&arr[   7], &arr[ 193]);
		core::bswap<BRSZ>(&arr[   9], &arr[  33]);
		core::bswap<BRSZ>(&arr[  11], &arr[ 161]);
		core::bswap<BRSZ>(&arr[  13], &arr[  97]);
		core::bswap<BRSZ>(&arr[  15], &arr[ 225]);
		core::bswap<BRSZ>(&arr[  19], &arr[ 145]);
		core::bswap<BRSZ>(&arr[  21], &arr[  81]);
		core::bswap<BRSZ>(&arr[  23], &arr[ 209]);
		core::bswap<BRSZ>(&arr[  25], &arr[  49]);
		core::bswap<BRSZ>(&arr[  27], &arr[ 177]);
		core::bswap<BRSZ>(&arr[  29], &arr[ 113]);
		core::bswap<BRSZ>(&arr[  31], &arr[ 241]);
		core::bswap<BRSZ>(&arr[  35], &arr[ 137]);
		core::bswap<BRSZ>(&arr[  37], &arr[  73]);
		core::bswap<BRSZ>(&arr[  39], &arr[ 201]);
		core::bswap<BRSZ>(&arr[  43], &arr[ 169]);
		core::bswap<BRSZ>(&arr[  45], &arr[ 105]);
		core::bswap<BRSZ>(&arr[  47], &arr[ 233]);
		core::bswap<BRSZ>(&arr[  51], &arr[ 153]);
		core::bswap<BRSZ>(&arr[  53], &arr[  89]);
		core::bswap<BRSZ>(&arr[  55], &arr[ 217]);
		core::bswap<BRSZ>(&arr[  59], &arr[ 185]);
		core::bswap<BRSZ>(&arr[  61], &arr[ 121]);
		core::bswap<BRSZ>(&arr[  63], &arr[ 249]);
		core::bswap<BRSZ>(&arr[  67], &arr[ 133]);
		core::bswap<BRSZ>(&arr[  71], &arr[ 197]);
		core::bswap<BRSZ>(&arr[  75], &arr[ 165]);
		core::bswap<BRSZ>(&arr[  77], &arr[ 101]);
		core::bswap<BRSZ>(&arr[  79], &arr[ 229]);
		core::bswap<BRSZ>(&arr[  83], &arr[ 149]);
		core::bswap<BRSZ>(&arr[  87], &arr[ 213]);
		core::bswap<BRSZ>(&arr[  91], &arr[ 181]);
		core::bswap<BRSZ>(&arr[  93], &arr[ 117]);
		core::bswap<BRSZ>(&arr[  95], &arr[ 245]);
		core::bswap<BRSZ>(&arr[  99], &arr[ 141]);
		core::bswap<BRSZ>(&arr[ 103], &arr[ 205]);
		core::bswap<BRSZ>(&arr[ 107], &arr[ 173]);
		core::bswap<BRSZ>(&arr[ 111], &arr[ 237]);
		core::bswap<BRSZ>(&arr[ 115], &arr[ 157]);
		core::bswap<BRSZ>(&arr[ 119], &arr[ 221]);
		core::bswap<BRSZ>(&arr[ 123], &arr[ 189]);
		core::bswap<BRSZ>(&arr[ 127], &arr[ 253]);
		core::bswap<BRSZ>(&arr[ 135], &arr[ 195]);
		core::bswap<BRSZ>(&arr[ 139], &arr[ 163]);
		core::bswap<BRSZ>(&arr[ 143], &arr[ 227]);
		core::bswap<BRSZ>(&arr[ 151], &arr[ 211]);
		core::bswap<BRSZ>(&arr[ 155], &arr[ 179]);
		core::bswap<BRSZ>(&arr[ 159], &arr[ 243]);
		core::bswap<BRSZ>(&arr[ 167], &arr[ 203]);
		core::bswap<BRSZ>(&arr[ 175], &arr[ 235]);
		core::bswap<BRSZ>(&arr[ 183], &arr[ 219]);
		core::bswap<BRSZ>(&arr[ 191], &arr[ 251]);
		core::bswap<BRSZ>(&arr[ 207], &arr[ 231]);
		core::bswap<BRSZ>(&arr[ 223], &arr[ 247]);
	return;
	case 256:
		core::bswap<BRSZ>(&arr[   3], &arr[ 257]);
		core::bswap<BRSZ>(&arr[   5], &arr[ 129]);
		core::bswap<BRSZ>(&arr[   7], &arr[ 385]);
		core::bswap<BRSZ>(&arr[   9], &arr[  65]);
		core::bswap<BRSZ>(&arr[  11], &arr[ 321]);
		core::bswap<BRSZ>(&arr[  13], &arr[ 193]);
		core::bswap<BRSZ>(&arr[  15], &arr[ 449]);
		core::bswap<BRSZ>(&arr[  17], &arr[  33]);
		core::bswap<BRSZ>(&arr[  19], &arr[ 289]);
		core::bswap<BRSZ>(&arr[  21], &arr[ 161]);
		core::bswap<BRSZ>(&arr[  23], &arr[ 417]);
		core::bswap<BRSZ>(&arr[  25], &arr[  97]);
		core::bswap<BRSZ>(&arr[  27], &arr[ 353]);
		core::bswap<BRSZ>(&arr[  29], &arr[ 225]);
		core::bswap<BRSZ>(&arr[  31], &arr[ 481]);
		core::bswap<BRSZ>(&arr[  35], &arr[ 273]);
		core::bswap<BRSZ>(&arr[  37], &arr[ 145]);
		core::bswap<BRSZ>(&arr[  39], &arr[ 401]);
		core::bswap<BRSZ>(&arr[  41], &arr[  81]);
		core::bswap<BRSZ>(&arr[  43], &arr[ 337]);
		core::bswap<BRSZ>(&arr[  45], &arr[ 209]);
		core::bswap<BRSZ>(&arr[  47], &arr[ 465]);
		core::bswap<BRSZ>(&arr[  51], &arr[ 305]);
		core::bswap<BRSZ>(&arr[  53], &arr[ 177]);
		core::bswap<BRSZ>(&arr[  55], &arr[ 433]);
		core::bswap<BRSZ>(&arr[  57], &arr[ 113]);
		core::bswap<BRSZ>(&arr[  59], &arr[ 369]);
		core::bswap<BRSZ>(&arr[  61], &arr[ 241]);
		core::bswap<BRSZ>(&arr[  63], &arr[ 497]);
		core::bswap<BRSZ>(&arr[  67], &arr[ 265]);
		core::bswap<BRSZ>(&arr[  69], &arr[ 137]);
		core::bswap<BRSZ>(&arr[  71], &arr[ 393]);
		core::bswap<BRSZ>(&arr[  75], &arr[ 329]);
		core::bswap<BRSZ>(&arr[  77], &arr[ 201]);
		core::bswap<BRSZ>(&arr[  79], &arr[ 457]);
		core::bswap<BRSZ>(&arr[  83], &arr[ 297]);
		core::bswap<BRSZ>(&arr[  85], &arr[ 169]);
		core::bswap<BRSZ>(&arr[  87], &arr[ 425]);
		core::bswap<BRSZ>(&arr[  89], &arr[ 105]);
		core::bswap<BRSZ>(&arr[  91], &arr[ 361]);
		core::bswap<BRSZ>(&arr[  93], &arr[ 233]);
		core::bswap<BRSZ>(&arr[  95], &arr[ 489]);
		core::bswap<BRSZ>(&arr[  99], &arr[ 281]);
		core::bswap<BRSZ>(&arr[ 101], &arr[ 153]);
		core::bswap<BRSZ>(&arr[ 103], &arr[ 409]);
		core::bswap<BRSZ>(&arr[ 107], &arr[ 345]);
		core::bswap<BRSZ>(&arr[ 109], &arr[ 217]);
		core::bswap<BRSZ>(&arr[ 111], &arr[ 473]);
		core::bswap<BRSZ>(&arr[ 115], &arr[ 313]);
		core::bswap<BRSZ>(&arr[ 117], &arr[ 185]);
		core::bswap<BRSZ>(&arr[ 119], &arr[ 441]);
		core::bswap<BRSZ>(&arr[ 123], &arr[ 377]);
		core::bswap<BRSZ>(&arr[ 125], &arr[ 249]);
		core::bswap<BRSZ>(&arr[ 127], &arr[ 505]);
		core::bswap<BRSZ>(&arr[ 131], &arr[ 261]);
		core::bswap<BRSZ>(&arr[ 135], &arr[ 389]);
		core::bswap<BRSZ>(&arr[ 139], &arr[ 325]);
		core::bswap<BRSZ>(&arr[ 141], &arr[ 197]);
		core::bswap<BRSZ>(&arr[ 143], &arr[ 453]);
		core::bswap<BRSZ>(&arr[ 147], &arr[ 293]);
		core::bswap<BRSZ>(&arr[ 149], &arr[ 165]);
		core::bswap<BRSZ>(&arr[ 151], &arr[ 421]);
		core::bswap<BRSZ>(&arr[ 155], &arr[ 357]);
		core::bswap<BRSZ>(&arr[ 157], &arr[ 229]);
		core::bswap<BRSZ>(&arr[ 159], &arr[ 485]);
		core::bswap<BRSZ>(&arr[ 163], &arr[ 277]);
		core::bswap<BRSZ>(&arr[ 167], &arr[ 405]);
		core::bswap<BRSZ>(&arr[ 171], &arr[ 341]);
		core::bswap<BRSZ>(&arr[ 173], &arr[ 213]);
		core::bswap<BRSZ>(&arr[ 175], &arr[ 469]);
		core::bswap<BRSZ>(&arr[ 179], &arr[ 309]);
		core::bswap<BRSZ>(&arr[ 183], &arr[ 437]);
		core::bswap<BRSZ>(&arr[ 187], &arr[ 373]);
		core::bswap<BRSZ>(&arr[ 189], &arr[ 245]);
		core::bswap<BRSZ>(&arr[ 191], &arr[ 501]);
		core::bswap<BRSZ>(&arr[ 195], &arr[ 269]);
		core::bswap<BRSZ>(&arr[ 199], &arr[ 397]);
		core::bswap<BRSZ>(&arr[ 203], &arr[ 333]);
		core::bswap<BRSZ>(&arr[ 207], &arr[ 461]);
		core::bswap<BRSZ>(&arr[ 211], &arr[ 301]);
		core::bswap<BRSZ>(&arr[ 215], &arr[ 429]);
		core::bswap<BRSZ>(&arr[ 219], &arr[ 365]);
		core::bswap<BRSZ>(&arr[ 221], &arr[ 237]);
		core::bswap<BRSZ>(&arr[ 223], &arr[ 493]);
		core::bswap<BRSZ>(&arr[ 227], &arr[ 285]);
		core::bswap<BRSZ>(&arr[ 231], &arr[ 413]);
		core::bswap<BRSZ>(&arr[ 235], &arr[ 349]);
		core::bswap<BRSZ>(&arr[ 239], &arr[ 477]);
		core::bswap<BRSZ>(&arr[ 243], &arr[ 317]);
		core::bswap<BRSZ>(&arr[ 247], &arr[ 445]);
		core::bswap<BRSZ>(&arr[ 251], &arr[ 381]);
		core::bswap<BRSZ>(&arr[ 255], &arr[ 509]);
		core::bswap<BRSZ>(&arr[ 263], &arr[ 387]);
		core::bswap<BRSZ>(&arr[ 267], &arr[ 323]);
		core::bswap<BRSZ>(&arr[ 271], &arr[ 451]);
		core::bswap<BRSZ>(&arr[ 275], &arr[ 291]);
		core::bswap<BRSZ>(&arr[ 279], &arr[ 419]);
		core::bswap<BRSZ>(&arr[ 283], &arr[ 355]);
		core::bswap<BRSZ>(&arr[ 287], &arr[ 483]);
		core::bswap<BRSZ>(&arr[ 295], &arr[ 403]);
		core::bswap<BRSZ>(&arr[ 299], &arr[ 339]);
		core::bswap<BRSZ>(&arr[ 303], &arr[ 467]);
		core::bswap<BRSZ>(&arr[ 311], &arr[ 435]);
		core::bswap<BRSZ>(&arr[ 315], &arr[ 371]);
		core::bswap<BRSZ>(&arr[ 319], &arr[ 499]);
		core::bswap<BRSZ>(&arr[ 327], &arr[ 395]);
		core::bswap<BRSZ>(&arr[ 335], &arr[ 459]);
		core::bswap<BRSZ>(&arr[ 343], &arr[ 427]);
		core::bswap<BRSZ>(&arr[ 347], &arr[ 363]);
		core::bswap<BRSZ>(&arr[ 351], &arr[ 491]);
		core::bswap<BRSZ>(&arr[ 359], &arr[ 411]);
		core::bswap<BRSZ>(&arr[ 367], &arr[ 475]);
		core::bswap<BRSZ>(&arr[ 375], &arr[ 443]);
		core::bswap<BRSZ>(&arr[ 383], &arr[ 507]);
		core::bswap<BRSZ>(&arr[ 399], &arr[ 455]);
		core::bswap<BRSZ>(&arr[ 407], &arr[ 423]);
		core::bswap<BRSZ>(&arr[ 415], &arr[ 487]);
		core::bswap<BRSZ>(&arr[ 431], &arr[ 471]);
		core::bswap<BRSZ>(&arr[ 447], &arr[ 503]);
		core::bswap<BRSZ>(&arr[ 479], &arr[ 495]);
	return;
	case 512:
		core::bswap<BRSZ>(&arr[   3], &arr[ 513]);
		core::bswap<BRSZ>(&arr[   5], &arr[ 257]);
		core::bswap<BRSZ>(&arr[   7], &arr[ 769]);
		core::bswap<BRSZ>(&arr[   9], &arr[ 129]);
		core::bswap<BRSZ>(&arr[  11], &arr[ 641]);
		core::bswap<BRSZ>(&arr[  13], &arr[ 385]);
		core::bswap<BRSZ>(&arr[  15], &arr[ 897]);
		core::bswap<BRSZ>(&arr[  17], &arr[  65]);
		core::bswap<BRSZ>(&arr[  19], &arr[ 577]);
		core::bswap<BRSZ>(&arr[  21], &arr[ 321]);
		core::bswap<BRSZ>(&arr[  23], &arr[ 833]);
		core::bswap<BRSZ>(&arr[  25], &arr[ 193]);
		core::bswap<BRSZ>(&arr[  27], &arr[ 705]);
		core::bswap<BRSZ>(&arr[  29], &arr[ 449]);
		core::bswap<BRSZ>(&arr[  31], &arr[ 961]);
		core::bswap<BRSZ>(&arr[  35], &arr[ 545]);
		core::bswap<BRSZ>(&arr[  37], &arr[ 289]);
		core::bswap<BRSZ>(&arr[  39], &arr[ 801]);
		core::bswap<BRSZ>(&arr[  41], &arr[ 161]);
		core::bswap<BRSZ>(&arr[  43], &arr[ 673]);
		core::bswap<BRSZ>(&arr[  45], &arr[ 417]);
		core::bswap<BRSZ>(&arr[  47], &arr[ 929]);
		core::bswap<BRSZ>(&arr[  49], &arr[  97]);
		core::bswap<BRSZ>(&arr[  51], &arr[ 609]);
		core::bswap<BRSZ>(&arr[  53], &arr[ 353]);
		core::bswap<BRSZ>(&arr[  55], &arr[ 865]);
		core::bswap<BRSZ>(&arr[  57], &arr[ 225]);
		core::bswap<BRSZ>(&arr[  59], &arr[ 737]);
		core::bswap<BRSZ>(&arr[  61], &arr[ 481]);
		core::bswap<BRSZ>(&arr[  63], &arr[ 993]);
		core::bswap<BRSZ>(&arr[  67], &arr[ 529]);
		core::bswap<BRSZ>(&arr[  69], &arr[ 273]);
		core::bswap<BRSZ>(&arr[  71], &arr[ 785]);
		core::bswap<BRSZ>(&arr[  73], &arr[ 145]);
		core::bswap<BRSZ>(&arr[  75], &arr[ 657]);
		core::bswap<BRSZ>(&arr[  77], &arr[ 401]);
		core::bswap<BRSZ>(&arr[  79], &arr[ 913]);
		core::bswap<BRSZ>(&arr[  83], &arr[ 593]);
		core::bswap<BRSZ>(&arr[  85], &arr[ 337]);
		core::bswap<BRSZ>(&arr[  87], &arr[ 849]);
		core::bswap<BRSZ>(&arr[  89], &arr[ 209]);
		core::bswap<BRSZ>(&arr[  91], &arr[ 721]);
		core::bswap<BRSZ>(&arr[  93], &arr[ 465]);
		core::bswap<BRSZ>(&arr[  95], &arr[ 977]);
		core::bswap<BRSZ>(&arr[  99], &arr[ 561]);
		core::bswap<BRSZ>(&arr[ 101], &arr[ 305]);
		core::bswap<BRSZ>(&arr[ 103], &arr[ 817]);
		core::bswap<BRSZ>(&arr[ 105], &arr[ 177]);
		core::bswap<BRSZ>(&arr[ 107], &arr[ 689]);
		core::bswap<BRSZ>(&arr[ 109], &arr[ 433]);
		core::bswap<BRSZ>(&arr[ 111], &arr[ 945]);
		core::bswap<BRSZ>(&arr[ 115], &arr[ 625]);
		core::bswap<BRSZ>(&arr[ 117], &arr[ 369]);
		core::bswap<BRSZ>(&arr[ 119], &arr[ 881]);
		core::bswap<BRSZ>(&arr[ 121], &arr[ 241]);
		core::bswap<BRSZ>(&arr[ 123], &arr[ 753]);
		core::bswap<BRSZ>(&arr[ 125], &arr[ 497]);
		core::bswap<BRSZ>(&arr[ 127], &arr[1009]);
		core::bswap<BRSZ>(&arr[ 131], &arr[ 521]);
		core::bswap<BRSZ>(&arr[ 133], &arr[ 265]);
		core::bswap<BRSZ>(&arr[ 135], &arr[ 777]);
		core::bswap<BRSZ>(&arr[ 139], &arr[ 649]);
		core::bswap<BRSZ>(&arr[ 141], &arr[ 393]);
		core::bswap<BRSZ>(&arr[ 143], &arr[ 905]);
		core::bswap<BRSZ>(&arr[ 147], &arr[ 585]);
		core::bswap<BRSZ>(&arr[ 149], &arr[ 329]);
		core::bswap<BRSZ>(&arr[ 151], &arr[ 841]);
		core::bswap<BRSZ>(&arr[ 153], &arr[ 201]);
		core::bswap<BRSZ>(&arr[ 155], &arr[ 713]);
		core::bswap<BRSZ>(&arr[ 157], &arr[ 457]);
		core::bswap<BRSZ>(&arr[ 159], &arr[ 969]);
		core::bswap<BRSZ>(&arr[ 163], &arr[ 553]);
		core::bswap<BRSZ>(&arr[ 165], &arr[ 297]);
		core::bswap<BRSZ>(&arr[ 167], &arr[ 809]);
		core::bswap<BRSZ>(&arr[ 171], &arr[ 681]);
		core::bswap<BRSZ>(&arr[ 173], &arr[ 425]);
		core::bswap<BRSZ>(&arr[ 175], &arr[ 937]);
		core::bswap<BRSZ>(&arr[ 179], &arr[ 617]);
		core::bswap<BRSZ>(&arr[ 181], &arr[ 361]);
		core::bswap<BRSZ>(&arr[ 183], &arr[ 873]);
		core::bswap<BRSZ>(&arr[ 185], &arr[ 233]);
		core::bswap<BRSZ>(&arr[ 187], &arr[ 745]);
		core::bswap<BRSZ>(&arr[ 189], &arr[ 489]);
		core::bswap<BRSZ>(&arr[ 191], &arr[1001]);
		core::bswap<BRSZ>(&arr[ 195], &arr[ 537]);
		core::bswap<BRSZ>(&arr[ 197], &arr[ 281]);
		core::bswap<BRSZ>(&arr[ 199], &arr[ 793]);
		core::bswap<BRSZ>(&arr[ 203], &arr[ 665]);
		core::bswap<BRSZ>(&arr[ 205], &arr[ 409]);
		core::bswap<BRSZ>(&arr[ 207], &arr[ 921]);
		core::bswap<BRSZ>(&arr[ 211], &arr[ 601]);
		core::bswap<BRSZ>(&arr[ 213], &arr[ 345]);
		core::bswap<BRSZ>(&arr[ 215], &arr[ 857]);
		core::bswap<BRSZ>(&arr[ 219], &arr[ 729]);
		core::bswap<BRSZ>(&arr[ 221], &arr[ 473]);
		core::bswap<BRSZ>(&arr[ 223], &arr[ 985]);
		core::bswap<BRSZ>(&arr[ 227], &arr[ 569]);
		core::bswap<BRSZ>(&arr[ 229], &arr[ 313]);
		core::bswap<BRSZ>(&arr[ 231], &arr[ 825]);
		core::bswap<BRSZ>(&arr[ 235], &arr[ 697]);
		core::bswap<BRSZ>(&arr[ 237], &arr[ 441]);
		core::bswap<BRSZ>(&arr[ 239], &arr[ 953]);
		core::bswap<BRSZ>(&arr[ 243], &arr[ 633]);
		core::bswap<BRSZ>(&arr[ 245], &arr[ 377]);
		core::bswap<BRSZ>(&arr[ 247], &arr[ 889]);
		core::bswap<BRSZ>(&arr[ 251], &arr[ 761]);
		core::bswap<BRSZ>(&arr[ 253], &arr[ 505]);
		core::bswap<BRSZ>(&arr[ 255], &arr[1017]);
		core::bswap<BRSZ>(&arr[ 259], &arr[ 517]);
		core::bswap<BRSZ>(&arr[ 263], &arr[ 773]);
		core::bswap<BRSZ>(&arr[ 267], &arr[ 645]);
		core::bswap<BRSZ>(&arr[ 269], &arr[ 389]);
		core::bswap<BRSZ>(&arr[ 271], &arr[ 901]);
		core::bswap<BRSZ>(&arr[ 275], &arr[ 581]);
		core::bswap<BRSZ>(&arr[ 277], &arr[ 325]);
		core::bswap<BRSZ>(&arr[ 279], &arr[ 837]);
		core::bswap<BRSZ>(&arr[ 283], &arr[ 709]);
		core::bswap<BRSZ>(&arr[ 285], &arr[ 453]);
		core::bswap<BRSZ>(&arr[ 287], &arr[ 965]);
		core::bswap<BRSZ>(&arr[ 291], &arr[ 549]);
		core::bswap<BRSZ>(&arr[ 295], &arr[ 805]);
		core::bswap<BRSZ>(&arr[ 299], &arr[ 677]);
		core::bswap<BRSZ>(&arr[ 301], &arr[ 421]);
		core::bswap<BRSZ>(&arr[ 303], &arr[ 933]);
		core::bswap<BRSZ>(&arr[ 307], &arr[ 613]);
		core::bswap<BRSZ>(&arr[ 309], &arr[ 357]);
		core::bswap<BRSZ>(&arr[ 311], &arr[ 869]);
		core::bswap<BRSZ>(&arr[ 315], &arr[ 741]);
		core::bswap<BRSZ>(&arr[ 317], &arr[ 485]);
		core::bswap<BRSZ>(&arr[ 319], &arr[ 997]);
		core::bswap<BRSZ>(&arr[ 323], &arr[ 533]);
		core::bswap<BRSZ>(&arr[ 327], &arr[ 789]);
		core::bswap<BRSZ>(&arr[ 331], &arr[ 661]);
		core::bswap<BRSZ>(&arr[ 333], &arr[ 405]);
		core::bswap<BRSZ>(&arr[ 335], &arr[ 917]);
		core::bswap<BRSZ>(&arr[ 339], &arr[ 597]);
		core::bswap<BRSZ>(&arr[ 343], &arr[ 853]);
		core::bswap<BRSZ>(&arr[ 347], &arr[ 725]);
		core::bswap<BRSZ>(&arr[ 349], &arr[ 469]);
		core::bswap<BRSZ>(&arr[ 351], &arr[ 981]);
		core::bswap<BRSZ>(&arr[ 355], &arr[ 565]);
		core::bswap<BRSZ>(&arr[ 359], &arr[ 821]);
		core::bswap<BRSZ>(&arr[ 363], &arr[ 693]);
		core::bswap<BRSZ>(&arr[ 365], &arr[ 437]);
		core::bswap<BRSZ>(&arr[ 367], &arr[ 949]);
		core::bswap<BRSZ>(&arr[ 371], &arr[ 629]);
		core::bswap<BRSZ>(&arr[ 375], &arr[ 885]);
		core::bswap<BRSZ>(&arr[ 379], &arr[ 757]);
		core::bswap<BRSZ>(&arr[ 381], &arr[ 501]);
		core::bswap<BRSZ>(&arr[ 383], &arr[1013]);
		core::bswap<BRSZ>(&arr[ 387], &arr[ 525]);
		core::bswap<BRSZ>(&arr[ 391], &arr[ 781]);
		core::bswap<BRSZ>(&arr[ 395], &arr[ 653]);
		core::bswap<BRSZ>(&arr[ 399], &arr[ 909]);
		core::bswap<BRSZ>(&arr[ 403], &arr[ 589]);
		core::bswap<BRSZ>(&arr[ 407], &arr[ 845]);
		core::bswap<BRSZ>(&arr[ 411], &arr[ 717]);
		core::bswap<BRSZ>(&arr[ 413], &arr[ 461]);
		core::bswap<BRSZ>(&arr[ 415], &arr[ 973]);
		core::bswap<BRSZ>(&arr[ 419], &arr[ 557]);
		core::bswap<BRSZ>(&arr[ 423], &arr[ 813]);
		core::bswap<BRSZ>(&arr[ 427], &arr[ 685]);
		core::bswap<BRSZ>(&arr[ 431], &arr[ 941]);
		core::bswap<BRSZ>(&arr[ 435], &arr[ 621]);
		core::bswap<BRSZ>(&arr[ 439], &arr[ 877]);
		core::bswap<BRSZ>(&arr[ 443], &arr[ 749]);
		core::bswap<BRSZ>(&arr[ 445], &arr[ 493]);
		core::bswap<BRSZ>(&arr[ 447], &arr[1005]);
		core::bswap<BRSZ>(&arr[ 451], &arr[ 541]);
		core::bswap<BRSZ>(&arr[ 455], &arr[ 797]);
		core::bswap<BRSZ>(&arr[ 459], &arr[ 669]);
		core::bswap<BRSZ>(&arr[ 463], &arr[ 925]);
		core::bswap<BRSZ>(&arr[ 467], &arr[ 605]);
		core::bswap<BRSZ>(&arr[ 471], &arr[ 861]);
		core::bswap<BRSZ>(&arr[ 475], &arr[ 733]);
		core::bswap<BRSZ>(&arr[ 479], &arr[ 989]);
		core::bswap<BRSZ>(&arr[ 483], &arr[ 573]);
		core::bswap<BRSZ>(&arr[ 487], &arr[ 829]);
		core::bswap<BRSZ>(&arr[ 491], &arr[ 701]);
		core::bswap<BRSZ>(&arr[ 495], &arr[ 957]);
		core::bswap<BRSZ>(&arr[ 499], &arr[ 637]);
		core::bswap<BRSZ>(&arr[ 503], &arr[ 893]);
		core::bswap<BRSZ>(&arr[ 507], &arr[ 765]);
		core::bswap<BRSZ>(&arr[ 511], &arr[1021]);
		core::bswap<BRSZ>(&arr[ 519], &arr[ 771]);
		core::bswap<BRSZ>(&arr[ 523], &arr[ 643]);
		core::bswap<BRSZ>(&arr[ 527], &arr[ 899]);
		core::bswap<BRSZ>(&arr[ 531], &arr[ 579]);
		core::bswap<BRSZ>(&arr[ 535], &arr[ 835]);
		core::bswap<BRSZ>(&arr[ 539], &arr[ 707]);
		core::bswap<BRSZ>(&arr[ 543], &arr[ 963]);
		core::bswap<BRSZ>(&arr[ 551], &arr[ 803]);
		core::bswap<BRSZ>(&arr[ 555], &arr[ 675]);
		core::bswap<BRSZ>(&arr[ 559], &arr[ 931]);
		core::bswap<BRSZ>(&arr[ 563], &arr[ 611]);
		core::bswap<BRSZ>(&arr[ 567], &arr[ 867]);
		core::bswap<BRSZ>(&arr[ 571], &arr[ 739]);
		core::bswap<BRSZ>(&arr[ 575], &arr[ 995]);
		core::bswap<BRSZ>(&arr[ 583], &arr[ 787]);
		core::bswap<BRSZ>(&arr[ 587], &arr[ 659]);
		core::bswap<BRSZ>(&arr[ 591], &arr[ 915]);
		core::bswap<BRSZ>(&arr[ 599], &arr[ 851]);
		core::bswap<BRSZ>(&arr[ 603], &arr[ 723]);
		core::bswap<BRSZ>(&arr[ 607], &arr[ 979]);
		core::bswap<BRSZ>(&arr[ 615], &arr[ 819]);
		core::bswap<BRSZ>(&arr[ 619], &arr[ 691]);
		core::bswap<BRSZ>(&arr[ 623], &arr[ 947]);
		core::bswap<BRSZ>(&arr[ 631], &arr[ 883]);
		core::bswap<BRSZ>(&arr[ 635], &arr[ 755]);
		core::bswap<BRSZ>(&arr[ 639], &arr[1011]);
		core::bswap<BRSZ>(&arr[ 647], &arr[ 779]);
		core::bswap<BRSZ>(&arr[ 655], &arr[ 907]);
		core::bswap<BRSZ>(&arr[ 663], &arr[ 843]);
		core::bswap<BRSZ>(&arr[ 667], &arr[ 715]);
		core::bswap<BRSZ>(&arr[ 671], &arr[ 971]);
		core::bswap<BRSZ>(&arr[ 679], &arr[ 811]);
		core::bswap<BRSZ>(&arr[ 687], &arr[ 939]);
		core::bswap<BRSZ>(&arr[ 695], &arr[ 875]);
		core::bswap<BRSZ>(&arr[ 699], &arr[ 747]);
		core::bswap<BRSZ>(&arr[ 703], &arr[1003]);
		core::bswap<BRSZ>(&arr[ 711], &arr[ 795]);
		core::bswap<BRSZ>(&arr[ 719], &arr[ 923]);
		core::bswap<BRSZ>(&arr[ 727], &arr[ 859]);
		core::bswap<BRSZ>(&arr[ 735], &arr[ 987]);
		core::bswap<BRSZ>(&arr[ 743], &arr[ 827]);
		core::bswap<BRSZ>(&arr[ 751], &arr[ 955]);
		core::bswap<BRSZ>(&arr[ 759], &arr[ 891]);
		core::bswap<BRSZ>(&arr[ 767], &arr[1019]);
		core::bswap<BRSZ>(&arr[ 783], &arr[ 903]);
		core::bswap<BRSZ>(&arr[ 791], &arr[ 839]);
		core::bswap<BRSZ>(&arr[ 799], &arr[ 967]);
		core::bswap<BRSZ>(&arr[ 815], &arr[ 935]);
		core::bswap<BRSZ>(&arr[ 823], &arr[ 871]);
		core::bswap<BRSZ>(&arr[ 831], &arr[ 999]);
		core::bswap<BRSZ>(&arr[ 847], &arr[ 919]);
		core::bswap<BRSZ>(&arr[ 863], &arr[ 983]);
		core::bswap<BRSZ>(&arr[ 879], &arr[ 951]);
		core::bswap<BRSZ>(&arr[ 895], &arr[1015]);
		core::bswap<BRSZ>(&arr[ 927], &arr[ 975]);
		core::bswap<BRSZ>(&arr[ 959], &arr[1007]);
	return;
	case 1024:
		core::bswap<BRSZ>(&arr[   3], &arr[1025]);
		core::bswap<BRSZ>(&arr[   5], &arr[ 513]);
		core::bswap<BRSZ>(&arr[   7], &arr[1537]);
		core::bswap<BRSZ>(&arr[   9], &arr[ 257]);
		core::bswap<BRSZ>(&arr[  11], &arr[1281]);
		core::bswap<BRSZ>(&arr[  13], &arr[ 769]);
		core::bswap<BRSZ>(&arr[  15], &arr[1793]);
		core::bswap<BRSZ>(&arr[  17], &arr[ 129]);
		core::bswap<BRSZ>(&arr[  19], &arr[1153]);
		core::bswap<BRSZ>(&arr[  21], &arr[ 641]);
		core::bswap<BRSZ>(&arr[  23], &arr[1665]);
		core::bswap<BRSZ>(&arr[  25], &arr[ 385]);
		core::bswap<BRSZ>(&arr[  27], &arr[1409]);
		core::bswap<BRSZ>(&arr[  29], &arr[ 897]);
		core::bswap<BRSZ>(&arr[  31], &arr[1921]);
		core::bswap<BRSZ>(&arr[  33], &arr[  65]);
		core::bswap<BRSZ>(&arr[  35], &arr[1089]);
		core::bswap<BRSZ>(&arr[  37], &arr[ 577]);
		core::bswap<BRSZ>(&arr[  39], &arr[1601]);
		core::bswap<BRSZ>(&arr[  41], &arr[ 321]);
		core::bswap<BRSZ>(&arr[  43], &arr[1345]);
		core::bswap<BRSZ>(&arr[  45], &arr[ 833]);
		core::bswap<BRSZ>(&arr[  47], &arr[1857]);
		core::bswap<BRSZ>(&arr[  49], &arr[ 193]);
		core::bswap<BRSZ>(&arr[  51], &arr[1217]);
		core::bswap<BRSZ>(&arr[  53], &arr[ 705]);
		core::bswap<BRSZ>(&arr[  55], &arr[1729]);
		core::bswap<BRSZ>(&arr[  57], &arr[ 449]);
		core::bswap<BRSZ>(&arr[  59], &arr[1473]);
		core::bswap<BRSZ>(&arr[  61], &arr[ 961]);
		core::bswap<BRSZ>(&arr[  63], &arr[1985]);
		core::bswap<BRSZ>(&arr[  67], &arr[1057]);
		core::bswap<BRSZ>(&arr[  69], &arr[ 545]);
		core::bswap<BRSZ>(&arr[  71], &arr[1569]);
		core::bswap<BRSZ>(&arr[  73], &arr[ 289]);
		core::bswap<BRSZ>(&arr[  75], &arr[1313]);
		core::bswap<BRSZ>(&arr[  77], &arr[ 801]);
		core::bswap<BRSZ>(&arr[  79], &arr[1825]);
		core::bswap<BRSZ>(&arr[  81], &arr[ 161]);
		core::bswap<BRSZ>(&arr[  83], &arr[1185]);
		core::bswap<BRSZ>(&arr[  85], &arr[ 673]);
		core::bswap<BRSZ>(&arr[  87], &arr[1697]);
		core::bswap<BRSZ>(&arr[  89], &arr[ 417]);
		core::bswap<BRSZ>(&arr[  91], &arr[1441]);
		core::bswap<BRSZ>(&arr[  93], &arr[ 929]);
		core::bswap<BRSZ>(&arr[  95], &arr[1953]);
		core::bswap<BRSZ>(&arr[  99], &arr[1121]);
		core::bswap<BRSZ>(&arr[ 101], &arr[ 609]);
		core::bswap<BRSZ>(&arr[ 103], &arr[1633]);
		core::bswap<BRSZ>(&arr[ 105], &arr[ 353]);
		core::bswap<BRSZ>(&arr[ 107], &arr[1377]);
		core::bswap<BRSZ>(&arr[ 109], &arr[ 865]);
		core::bswap<BRSZ>(&arr[ 111], &arr[1889]);
		core::bswap<BRSZ>(&arr[ 113], &arr[ 225]);
		core::bswap<BRSZ>(&arr[ 115], &arr[1249]);
		core::bswap<BRSZ>(&arr[ 117], &arr[ 737]);
		core::bswap<BRSZ>(&arr[ 119], &arr[1761]);
		core::bswap<BRSZ>(&arr[ 121], &arr[ 481]);
		core::bswap<BRSZ>(&arr[ 123], &arr[1505]);
		core::bswap<BRSZ>(&arr[ 125], &arr[ 993]);
		core::bswap<BRSZ>(&arr[ 127], &arr[2017]);
		core::bswap<BRSZ>(&arr[ 131], &arr[1041]);
		core::bswap<BRSZ>(&arr[ 133], &arr[ 529]);
		core::bswap<BRSZ>(&arr[ 135], &arr[1553]);
		core::bswap<BRSZ>(&arr[ 137], &arr[ 273]);
		core::bswap<BRSZ>(&arr[ 139], &arr[1297]);
		core::bswap<BRSZ>(&arr[ 141], &arr[ 785]);
		core::bswap<BRSZ>(&arr[ 143], &arr[1809]);
		core::bswap<BRSZ>(&arr[ 147], &arr[1169]);
		core::bswap<BRSZ>(&arr[ 149], &arr[ 657]);
		core::bswap<BRSZ>(&arr[ 151], &arr[1681]);
		core::bswap<BRSZ>(&arr[ 153], &arr[ 401]);
		core::bswap<BRSZ>(&arr[ 155], &arr[1425]);
		core::bswap<BRSZ>(&arr[ 157], &arr[ 913]);
		core::bswap<BRSZ>(&arr[ 159], &arr[1937]);
		core::bswap<BRSZ>(&arr[ 163], &arr[1105]);
		core::bswap<BRSZ>(&arr[ 165], &arr[ 593]);
		core::bswap<BRSZ>(&arr[ 167], &arr[1617]);
		core::bswap<BRSZ>(&arr[ 169], &arr[ 337]);
		core::bswap<BRSZ>(&arr[ 171], &arr[1361]);
		core::bswap<BRSZ>(&arr[ 173], &arr[ 849]);
		core::bswap<BRSZ>(&arr[ 175], &arr[1873]);
		core::bswap<BRSZ>(&arr[ 177], &arr[ 209]);
		core::bswap<BRSZ>(&arr[ 179], &arr[1233]);
		core::bswap<BRSZ>(&arr[ 181], &arr[ 721]);
		core::bswap<BRSZ>(&arr[ 183], &arr[1745]);
		core::bswap<BRSZ>(&arr[ 185], &arr[ 465]);
		core::bswap<BRSZ>(&arr[ 187], &arr[1489]);
		core::bswap<BRSZ>(&arr[ 189], &arr[ 977]);
		core::bswap<BRSZ>(&arr[ 191], &arr[2001]);
		core::bswap<BRSZ>(&arr[ 195], &arr[1073]);
		core::bswap<BRSZ>(&arr[ 197], &arr[ 561]);
		core::bswap<BRSZ>(&arr[ 199], &arr[1585]);
		core::bswap<BRSZ>(&arr[ 201], &arr[ 305]);
		core::bswap<BRSZ>(&arr[ 203], &arr[1329]);
		core::bswap<BRSZ>(&arr[ 205], &arr[ 817]);
		core::bswap<BRSZ>(&arr[ 207], &arr[1841]);
		core::bswap<BRSZ>(&arr[ 211], &arr[1201]);
		core::bswap<BRSZ>(&arr[ 213], &arr[ 689]);
		core::bswap<BRSZ>(&arr[ 215], &arr[1713]);
		core::bswap<BRSZ>(&arr[ 217], &arr[ 433]);
		core::bswap<BRSZ>(&arr[ 219], &arr[1457]);
		core::bswap<BRSZ>(&arr[ 221], &arr[ 945]);
		core::bswap<BRSZ>(&arr[ 223], &arr[1969]);
		core::bswap<BRSZ>(&arr[ 227], &arr[1137]);
		core::bswap<BRSZ>(&arr[ 229], &arr[ 625]);
		core::bswap<BRSZ>(&arr[ 231], &arr[1649]);
		core::bswap<BRSZ>(&arr[ 233], &arr[ 369]);
		core::bswap<BRSZ>(&arr[ 235], &arr[1393]);
		core::bswap<BRSZ>(&arr[ 237], &arr[ 881]);
		core::bswap<BRSZ>(&arr[ 239], &arr[1905]);
		core::bswap<BRSZ>(&arr[ 243], &arr[1265]);
		core::bswap<BRSZ>(&arr[ 245], &arr[ 753]);
		core::bswap<BRSZ>(&arr[ 247], &arr[1777]);
		core::bswap<BRSZ>(&arr[ 249], &arr[ 497]);
		core::bswap<BRSZ>(&arr[ 251], &arr[1521]);
		core::bswap<BRSZ>(&arr[ 253], &arr[1009]);
		core::bswap<BRSZ>(&arr[ 255], &arr[2033]);
		core::bswap<BRSZ>(&arr[ 259], &arr[1033]);
		core::bswap<BRSZ>(&arr[ 261], &arr[ 521]);
		core::bswap<BRSZ>(&arr[ 263], &arr[1545]);
		core::bswap<BRSZ>(&arr[ 267], &arr[1289]);
		core::bswap<BRSZ>(&arr[ 269], &arr[ 777]);
		core::bswap<BRSZ>(&arr[ 271], &arr[1801]);
		core::bswap<BRSZ>(&arr[ 275], &arr[1161]);
		core::bswap<BRSZ>(&arr[ 277], &arr[ 649]);
		core::bswap<BRSZ>(&arr[ 279], &arr[1673]);
		core::bswap<BRSZ>(&arr[ 281], &arr[ 393]);
		core::bswap<BRSZ>(&arr[ 283], &arr[1417]);
		core::bswap<BRSZ>(&arr[ 285], &arr[ 905]);
		core::bswap<BRSZ>(&arr[ 287], &arr[1929]);
		core::bswap<BRSZ>(&arr[ 291], &arr[1097]);
		core::bswap<BRSZ>(&arr[ 293], &arr[ 585]);
		core::bswap<BRSZ>(&arr[ 295], &arr[1609]);
		core::bswap<BRSZ>(&arr[ 297], &arr[ 329]);
		core::bswap<BRSZ>(&arr[ 299], &arr[1353]);
		core::bswap<BRSZ>(&arr[ 301], &arr[ 841]);
		core::bswap<BRSZ>(&arr[ 303], &arr[1865]);
		core::bswap<BRSZ>(&arr[ 307], &arr[1225]);
		core::bswap<BRSZ>(&arr[ 309], &arr[ 713]);
		core::bswap<BRSZ>(&arr[ 311], &arr[1737]);
		core::bswap<BRSZ>(&arr[ 313], &arr[ 457]);
		core::bswap<BRSZ>(&arr[ 315], &arr[1481]);
		core::bswap<BRSZ>(&arr[ 317], &arr[ 969]);
		core::bswap<BRSZ>(&arr[ 319], &arr[1993]);
		core::bswap<BRSZ>(&arr[ 323], &arr[1065]);
		core::bswap<BRSZ>(&arr[ 325], &arr[ 553]);
		core::bswap<BRSZ>(&arr[ 327], &arr[1577]);
		core::bswap<BRSZ>(&arr[ 331], &arr[1321]);
		core::bswap<BRSZ>(&arr[ 333], &arr[ 809]);
		core::bswap<BRSZ>(&arr[ 335], &arr[1833]);
		core::bswap<BRSZ>(&arr[ 339], &arr[1193]);
		core::bswap<BRSZ>(&arr[ 341], &arr[ 681]);
		core::bswap<BRSZ>(&arr[ 343], &arr[1705]);
		core::bswap<BRSZ>(&arr[ 345], &arr[ 425]);
		core::bswap<BRSZ>(&arr[ 347], &arr[1449]);
		core::bswap<BRSZ>(&arr[ 349], &arr[ 937]);
		core::bswap<BRSZ>(&arr[ 351], &arr[1961]);
		core::bswap<BRSZ>(&arr[ 355], &arr[1129]);
		core::bswap<BRSZ>(&arr[ 357], &arr[ 617]);
		core::bswap<BRSZ>(&arr[ 359], &arr[1641]);
		core::bswap<BRSZ>(&arr[ 363], &arr[1385]);
		core::bswap<BRSZ>(&arr[ 365], &arr[ 873]);
		core::bswap<BRSZ>(&arr[ 367], &arr[1897]);
		core::bswap<BRSZ>(&arr[ 371], &arr[1257]);
		core::bswap<BRSZ>(&arr[ 373], &arr[ 745]);
		core::bswap<BRSZ>(&arr[ 375], &arr[1769]);
		core::bswap<BRSZ>(&arr[ 377], &arr[ 489]);
		core::bswap<BRSZ>(&arr[ 379], &arr[1513]);
		core::bswap<BRSZ>(&arr[ 381], &arr[1001]);
		core::bswap<BRSZ>(&arr[ 383], &arr[2025]);
		core::bswap<BRSZ>(&arr[ 387], &arr[1049]);
		core::bswap<BRSZ>(&arr[ 389], &arr[ 537]);
		core::bswap<BRSZ>(&arr[ 391], &arr[1561]);
		core::bswap<BRSZ>(&arr[ 395], &arr[1305]);
		core::bswap<BRSZ>(&arr[ 397], &arr[ 793]);
		core::bswap<BRSZ>(&arr[ 399], &arr[1817]);
		core::bswap<BRSZ>(&arr[ 403], &arr[1177]);
		core::bswap<BRSZ>(&arr[ 405], &arr[ 665]);
		core::bswap<BRSZ>(&arr[ 407], &arr[1689]);
		core::bswap<BRSZ>(&arr[ 411], &arr[1433]);
		core::bswap<BRSZ>(&arr[ 413], &arr[ 921]);
		core::bswap<BRSZ>(&arr[ 415], &arr[1945]);
		core::bswap<BRSZ>(&arr[ 419], &arr[1113]);
		core::bswap<BRSZ>(&arr[ 421], &arr[ 601]);
		core::bswap<BRSZ>(&arr[ 423], &arr[1625]);
		core::bswap<BRSZ>(&arr[ 427], &arr[1369]);
		core::bswap<BRSZ>(&arr[ 429], &arr[ 857]);
		core::bswap<BRSZ>(&arr[ 431], &arr[1881]);
		core::bswap<BRSZ>(&arr[ 435], &arr[1241]);
		core::bswap<BRSZ>(&arr[ 437], &arr[ 729]);
		core::bswap<BRSZ>(&arr[ 439], &arr[1753]);
		core::bswap<BRSZ>(&arr[ 441], &arr[ 473]);
		core::bswap<BRSZ>(&arr[ 443], &arr[1497]);
		core::bswap<BRSZ>(&arr[ 445], &arr[ 985]);
		core::bswap<BRSZ>(&arr[ 447], &arr[2009]);
		core::bswap<BRSZ>(&arr[ 451], &arr[1081]);
		core::bswap<BRSZ>(&arr[ 453], &arr[ 569]);
		core::bswap<BRSZ>(&arr[ 455], &arr[1593]);
		core::bswap<BRSZ>(&arr[ 459], &arr[1337]);
		core::bswap<BRSZ>(&arr[ 461], &arr[ 825]);
		core::bswap<BRSZ>(&arr[ 463], &arr[1849]);
		core::bswap<BRSZ>(&arr[ 467], &arr[1209]);
		core::bswap<BRSZ>(&arr[ 469], &arr[ 697]);
		core::bswap<BRSZ>(&arr[ 471], &arr[1721]);
		core::bswap<BRSZ>(&arr[ 475], &arr[1465]);
		core::bswap<BRSZ>(&arr[ 477], &arr[ 953]);
		core::bswap<BRSZ>(&arr[ 479], &arr[1977]);
		core::bswap<BRSZ>(&arr[ 483], &arr[1145]);
		core::bswap<BRSZ>(&arr[ 485], &arr[ 633]);
		core::bswap<BRSZ>(&arr[ 487], &arr[1657]);
		core::bswap<BRSZ>(&arr[ 491], &arr[1401]);
		core::bswap<BRSZ>(&arr[ 493], &arr[ 889]);
		core::bswap<BRSZ>(&arr[ 495], &arr[1913]);
		core::bswap<BRSZ>(&arr[ 499], &arr[1273]);
		core::bswap<BRSZ>(&arr[ 501], &arr[ 761]);
		core::bswap<BRSZ>(&arr[ 503], &arr[1785]);
		core::bswap<BRSZ>(&arr[ 507], &arr[1529]);
		core::bswap<BRSZ>(&arr[ 509], &arr[1017]);
		core::bswap<BRSZ>(&arr[ 511], &arr[2041]);
		core::bswap<BRSZ>(&arr[ 515], &arr[1029]);
		core::bswap<BRSZ>(&arr[ 519], &arr[1541]);
		core::bswap<BRSZ>(&arr[ 523], &arr[1285]);
		core::bswap<BRSZ>(&arr[ 525], &arr[ 773]);
		core::bswap<BRSZ>(&arr[ 527], &arr[1797]);
		core::bswap<BRSZ>(&arr[ 531], &arr[1157]);
		core::bswap<BRSZ>(&arr[ 533], &arr[ 645]);
		core::bswap<BRSZ>(&arr[ 535], &arr[1669]);
		core::bswap<BRSZ>(&arr[ 539], &arr[1413]);
		core::bswap<BRSZ>(&arr[ 541], &arr[ 901]);
		core::bswap<BRSZ>(&arr[ 543], &arr[1925]);
		core::bswap<BRSZ>(&arr[ 547], &arr[1093]);
		core::bswap<BRSZ>(&arr[ 549], &arr[ 581]);
		core::bswap<BRSZ>(&arr[ 551], &arr[1605]);
		core::bswap<BRSZ>(&arr[ 555], &arr[1349]);
		core::bswap<BRSZ>(&arr[ 557], &arr[ 837]);
		core::bswap<BRSZ>(&arr[ 559], &arr[1861]);
		core::bswap<BRSZ>(&arr[ 563], &arr[1221]);
		core::bswap<BRSZ>(&arr[ 565], &arr[ 709]);
		core::bswap<BRSZ>(&arr[ 567], &arr[1733]);
		core::bswap<BRSZ>(&arr[ 571], &arr[1477]);
		core::bswap<BRSZ>(&arr[ 573], &arr[ 965]);
		core::bswap<BRSZ>(&arr[ 575], &arr[1989]);
		core::bswap<BRSZ>(&arr[ 579], &arr[1061]);
		core::bswap<BRSZ>(&arr[ 583], &arr[1573]);
		core::bswap<BRSZ>(&arr[ 587], &arr[1317]);
		core::bswap<BRSZ>(&arr[ 589], &arr[ 805]);
		core::bswap<BRSZ>(&arr[ 591], &arr[1829]);
		core::bswap<BRSZ>(&arr[ 595], &arr[1189]);
		core::bswap<BRSZ>(&arr[ 597], &arr[ 677]);
		core::bswap<BRSZ>(&arr[ 599], &arr[1701]);
		core::bswap<BRSZ>(&arr[ 603], &arr[1445]);
		core::bswap<BRSZ>(&arr[ 605], &arr[ 933]);
		core::bswap<BRSZ>(&arr[ 607], &arr[1957]);
		core::bswap<BRSZ>(&arr[ 611], &arr[1125]);
		core::bswap<BRSZ>(&arr[ 615], &arr[1637]);
		core::bswap<BRSZ>(&arr[ 619], &arr[1381]);
		core::bswap<BRSZ>(&arr[ 621], &arr[ 869]);
		core::bswap<BRSZ>(&arr[ 623], &arr[1893]);
		core::bswap<BRSZ>(&arr[ 627], &arr[1253]);
		core::bswap<BRSZ>(&arr[ 629], &arr[ 741]);
		core::bswap<BRSZ>(&arr[ 631], &arr[1765]);
		core::bswap<BRSZ>(&arr[ 635], &arr[1509]);
		core::bswap<BRSZ>(&arr[ 637], &arr[ 997]);
		core::bswap<BRSZ>(&arr[ 639], &arr[2021]);
		core::bswap<BRSZ>(&arr[ 643], &arr[1045]);
		core::bswap<BRSZ>(&arr[ 647], &arr[1557]);
		core::bswap<BRSZ>(&arr[ 651], &arr[1301]);
		core::bswap<BRSZ>(&arr[ 653], &arr[ 789]);
		core::bswap<BRSZ>(&arr[ 655], &arr[1813]);
		core::bswap<BRSZ>(&arr[ 659], &arr[1173]);
		core::bswap<BRSZ>(&arr[ 663], &arr[1685]);
		core::bswap<BRSZ>(&arr[ 667], &arr[1429]);
		core::bswap<BRSZ>(&arr[ 669], &arr[ 917]);
		core::bswap<BRSZ>(&arr[ 671], &arr[1941]);
		core::bswap<BRSZ>(&arr[ 675], &arr[1109]);
		core::bswap<BRSZ>(&arr[ 679], &arr[1621]);
		core::bswap<BRSZ>(&arr[ 683], &arr[1365]);
		core::bswap<BRSZ>(&arr[ 685], &arr[ 853]);
		core::bswap<BRSZ>(&arr[ 687], &arr[1877]);
		core::bswap<BRSZ>(&arr[ 691], &arr[1237]);
		core::bswap<BRSZ>(&arr[ 693], &arr[ 725]);
		core::bswap<BRSZ>(&arr[ 695], &arr[1749]);
		core::bswap<BRSZ>(&arr[ 699], &arr[1493]);
		core::bswap<BRSZ>(&arr[ 701], &arr[ 981]);
		core::bswap<BRSZ>(&arr[ 703], &arr[2005]);
		core::bswap<BRSZ>(&arr[ 707], &arr[1077]);
		core::bswap<BRSZ>(&arr[ 711], &arr[1589]);
		core::bswap<BRSZ>(&arr[ 715], &arr[1333]);
		core::bswap<BRSZ>(&arr[ 717], &arr[ 821]);
		core::bswap<BRSZ>(&arr[ 719], &arr[1845]);
		core::bswap<BRSZ>(&arr[ 723], &arr[1205]);
		core::bswap<BRSZ>(&arr[ 727], &arr[1717]);
		core::bswap<BRSZ>(&arr[ 731], &arr[1461]);
		core::bswap<BRSZ>(&arr[ 733], &arr[ 949]);
		core::bswap<BRSZ>(&arr[ 735], &arr[1973]);
		core::bswap<BRSZ>(&arr[ 739], &arr[1141]);
		core::bswap<BRSZ>(&arr[ 743], &arr[1653]);
		core::bswap<BRSZ>(&arr[ 747], &arr[1397]);
		core::bswap<BRSZ>(&arr[ 749], &arr[ 885]);
		core::bswap<BRSZ>(&arr[ 751], &arr[1909]);
		core::bswap<BRSZ>(&arr[ 755], &arr[1269]);
		core::bswap<BRSZ>(&arr[ 759], &arr[1781]);
		core::bswap<BRSZ>(&arr[ 763], &arr[1525]);
		core::bswap<BRSZ>(&arr[ 765], &arr[1013]);
		core::bswap<BRSZ>(&arr[ 767], &arr[2037]);
		core::bswap<BRSZ>(&arr[ 771], &arr[1037]);
		core::bswap<BRSZ>(&arr[ 775], &arr[1549]);
		core::bswap<BRSZ>(&arr[ 779], &arr[1293]);
		core::bswap<BRSZ>(&arr[ 783], &arr[1805]);
		core::bswap<BRSZ>(&arr[ 787], &arr[1165]);
		core::bswap<BRSZ>(&arr[ 791], &arr[1677]);
		core::bswap<BRSZ>(&arr[ 795], &arr[1421]);
		core::bswap<BRSZ>(&arr[ 797], &arr[ 909]);
		core::bswap<BRSZ>(&arr[ 799], &arr[1933]);
		core::bswap<BRSZ>(&arr[ 803], &arr[1101]);
		core::bswap<BRSZ>(&arr[ 807], &arr[1613]);
		core::bswap<BRSZ>(&arr[ 811], &arr[1357]);
		core::bswap<BRSZ>(&arr[ 813], &arr[ 845]);
		core::bswap<BRSZ>(&arr[ 815], &arr[1869]);
		core::bswap<BRSZ>(&arr[ 819], &arr[1229]);
		core::bswap<BRSZ>(&arr[ 823], &arr[1741]);
		core::bswap<BRSZ>(&arr[ 827], &arr[1485]);
		core::bswap<BRSZ>(&arr[ 829], &arr[ 973]);
		core::bswap<BRSZ>(&arr[ 831], &arr[1997]);
		core::bswap<BRSZ>(&arr[ 835], &arr[1069]);
		core::bswap<BRSZ>(&arr[ 839], &arr[1581]);
		core::bswap<BRSZ>(&arr[ 843], &arr[1325]);
		core::bswap<BRSZ>(&arr[ 847], &arr[1837]);
		core::bswap<BRSZ>(&arr[ 851], &arr[1197]);
		core::bswap<BRSZ>(&arr[ 855], &arr[1709]);
		core::bswap<BRSZ>(&arr[ 859], &arr[1453]);
		core::bswap<BRSZ>(&arr[ 861], &arr[ 941]);
		core::bswap<BRSZ>(&arr[ 863], &arr[1965]);
		core::bswap<BRSZ>(&arr[ 867], &arr[1133]);
		core::bswap<BRSZ>(&arr[ 871], &arr[1645]);
		core::bswap<BRSZ>(&arr[ 875], &arr[1389]);
		core::bswap<BRSZ>(&arr[ 879], &arr[1901]);
		core::bswap<BRSZ>(&arr[ 883], &arr[1261]);
		core::bswap<BRSZ>(&arr[ 887], &arr[1773]);
		core::bswap<BRSZ>(&arr[ 891], &arr[1517]);
		core::bswap<BRSZ>(&arr[ 893], &arr[1005]);
		core::bswap<BRSZ>(&arr[ 895], &arr[2029]);
		core::bswap<BRSZ>(&arr[ 899], &arr[1053]);
		core::bswap<BRSZ>(&arr[ 903], &arr[1565]);
		core::bswap<BRSZ>(&arr[ 907], &arr[1309]);
		core::bswap<BRSZ>(&arr[ 911], &arr[1821]);
		core::bswap<BRSZ>(&arr[ 915], &arr[1181]);
		core::bswap<BRSZ>(&arr[ 919], &arr[1693]);
		core::bswap<BRSZ>(&arr[ 923], &arr[1437]);
		core::bswap<BRSZ>(&arr[ 927], &arr[1949]);
		core::bswap<BRSZ>(&arr[ 931], &arr[1117]);
		core::bswap<BRSZ>(&arr[ 935], &arr[1629]);
		core::bswap<BRSZ>(&arr[ 939], &arr[1373]);
		core::bswap<BRSZ>(&arr[ 943], &arr[1885]);
		core::bswap<BRSZ>(&arr[ 947], &arr[1245]);
		core::bswap<BRSZ>(&arr[ 951], &arr[1757]);
		core::bswap<BRSZ>(&arr[ 955], &arr[1501]);
		core::bswap<BRSZ>(&arr[ 957], &arr[ 989]);
		core::bswap<BRSZ>(&arr[ 959], &arr[2013]);
		core::bswap<BRSZ>(&arr[ 963], &arr[1085]);
		core::bswap<BRSZ>(&arr[ 967], &arr[1597]);
		core::bswap<BRSZ>(&arr[ 971], &arr[1341]);
		core::bswap<BRSZ>(&arr[ 975], &arr[1853]);
		core::bswap<BRSZ>(&arr[ 979], &arr[1213]);
		core::bswap<BRSZ>(&arr[ 983], &arr[1725]);
		core::bswap<BRSZ>(&arr[ 987], &arr[1469]);
		core::bswap<BRSZ>(&arr[ 991], &arr[1981]);
		core::bswap<BRSZ>(&arr[ 995], &arr[1149]);
		core::bswap<BRSZ>(&arr[ 999], &arr[1661]);
		core::bswap<BRSZ>(&arr[1003], &arr[1405]);
		core::bswap<BRSZ>(&arr[1007], &arr[1917]);
		core::bswap<BRSZ>(&arr[1011], &arr[1277]);
		core::bswap<BRSZ>(&arr[1015], &arr[1789]);
		core::bswap<BRSZ>(&arr[1019], &arr[1533]);
		core::bswap<BRSZ>(&arr[1023], &arr[2045]);
		core::bswap<BRSZ>(&arr[1031], &arr[1539]);
		core::bswap<BRSZ>(&arr[1035], &arr[1283]);
		core::bswap<BRSZ>(&arr[1039], &arr[1795]);
		core::bswap<BRSZ>(&arr[1043], &arr[1155]);
		core::bswap<BRSZ>(&arr[1047], &arr[1667]);
		core::bswap<BRSZ>(&arr[1051], &arr[1411]);
		core::bswap<BRSZ>(&arr[1055], &arr[1923]);
		core::bswap<BRSZ>(&arr[1059], &arr[1091]);
		core::bswap<BRSZ>(&arr[1063], &arr[1603]);
		core::bswap<BRSZ>(&arr[1067], &arr[1347]);
		core::bswap<BRSZ>(&arr[1071], &arr[1859]);
		core::bswap<BRSZ>(&arr[1075], &arr[1219]);
		core::bswap<BRSZ>(&arr[1079], &arr[1731]);
		core::bswap<BRSZ>(&arr[1083], &arr[1475]);
		core::bswap<BRSZ>(&arr[1087], &arr[1987]);
		core::bswap<BRSZ>(&arr[1095], &arr[1571]);
		core::bswap<BRSZ>(&arr[1099], &arr[1315]);
		core::bswap<BRSZ>(&arr[1103], &arr[1827]);
		core::bswap<BRSZ>(&arr[1107], &arr[1187]);
		core::bswap<BRSZ>(&arr[1111], &arr[1699]);
		core::bswap<BRSZ>(&arr[1115], &arr[1443]);
		core::bswap<BRSZ>(&arr[1119], &arr[1955]);
		core::bswap<BRSZ>(&arr[1127], &arr[1635]);
		core::bswap<BRSZ>(&arr[1131], &arr[1379]);
		core::bswap<BRSZ>(&arr[1135], &arr[1891]);
		core::bswap<BRSZ>(&arr[1139], &arr[1251]);
		core::bswap<BRSZ>(&arr[1143], &arr[1763]);
		core::bswap<BRSZ>(&arr[1147], &arr[1507]);
		core::bswap<BRSZ>(&arr[1151], &arr[2019]);
		core::bswap<BRSZ>(&arr[1159], &arr[1555]);
		core::bswap<BRSZ>(&arr[1163], &arr[1299]);
		core::bswap<BRSZ>(&arr[1167], &arr[1811]);
		core::bswap<BRSZ>(&arr[1175], &arr[1683]);
		core::bswap<BRSZ>(&arr[1179], &arr[1427]);
		core::bswap<BRSZ>(&arr[1183], &arr[1939]);
		core::bswap<BRSZ>(&arr[1191], &arr[1619]);
		core::bswap<BRSZ>(&arr[1195], &arr[1363]);
		core::bswap<BRSZ>(&arr[1199], &arr[1875]);
		core::bswap<BRSZ>(&arr[1203], &arr[1235]);
		core::bswap<BRSZ>(&arr[1207], &arr[1747]);
		core::bswap<BRSZ>(&arr[1211], &arr[1491]);
		core::bswap<BRSZ>(&arr[1215], &arr[2003]);
		core::bswap<BRSZ>(&arr[1223], &arr[1587]);
		core::bswap<BRSZ>(&arr[1227], &arr[1331]);
		core::bswap<BRSZ>(&arr[1231], &arr[1843]);
		core::bswap<BRSZ>(&arr[1239], &arr[1715]);
		core::bswap<BRSZ>(&arr[1243], &arr[1459]);
		core::bswap<BRSZ>(&arr[1247], &arr[1971]);
		core::bswap<BRSZ>(&arr[1255], &arr[1651]);
		core::bswap<BRSZ>(&arr[1259], &arr[1395]);
		core::bswap<BRSZ>(&arr[1263], &arr[1907]);
		core::bswap<BRSZ>(&arr[1271], &arr[1779]);
		core::bswap<BRSZ>(&arr[1275], &arr[1523]);
		core::bswap<BRSZ>(&arr[1279], &arr[2035]);
		core::bswap<BRSZ>(&arr[1287], &arr[1547]);
		core::bswap<BRSZ>(&arr[1295], &arr[1803]);
		core::bswap<BRSZ>(&arr[1303], &arr[1675]);
		core::bswap<BRSZ>(&arr[1307], &arr[1419]);
		core::bswap<BRSZ>(&arr[1311], &arr[1931]);
		core::bswap<BRSZ>(&arr[1319], &arr[1611]);
		core::bswap<BRSZ>(&arr[1323], &arr[1355]);
		core::bswap<BRSZ>(&arr[1327], &arr[1867]);
		core::bswap<BRSZ>(&arr[1335], &arr[1739]);
		core::bswap<BRSZ>(&arr[1339], &arr[1483]);
		core::bswap<BRSZ>(&arr[1343], &arr[1995]);
		core::bswap<BRSZ>(&arr[1351], &arr[1579]);
		core::bswap<BRSZ>(&arr[1359], &arr[1835]);
		core::bswap<BRSZ>(&arr[1367], &arr[1707]);
		core::bswap<BRSZ>(&arr[1371], &arr[1451]);
		core::bswap<BRSZ>(&arr[1375], &arr[1963]);
		core::bswap<BRSZ>(&arr[1383], &arr[1643]);
		core::bswap<BRSZ>(&arr[1391], &arr[1899]);
		core::bswap<BRSZ>(&arr[1399], &arr[1771]);
		core::bswap<BRSZ>(&arr[1403], &arr[1515]);
		core::bswap<BRSZ>(&arr[1407], &arr[2027]);
		core::bswap<BRSZ>(&arr[1415], &arr[1563]);
		core::bswap<BRSZ>(&arr[1423], &arr[1819]);
		core::bswap<BRSZ>(&arr[1431], &arr[1691]);
		core::bswap<BRSZ>(&arr[1439], &arr[1947]);
		core::bswap<BRSZ>(&arr[1447], &arr[1627]);
		core::bswap<BRSZ>(&arr[1455], &arr[1883]);
		core::bswap<BRSZ>(&arr[1463], &arr[1755]);
		core::bswap<BRSZ>(&arr[1467], &arr[1499]);
		core::bswap<BRSZ>(&arr[1471], &arr[2011]);
		core::bswap<BRSZ>(&arr[1479], &arr[1595]);
		core::bswap<BRSZ>(&arr[1487], &arr[1851]);
		core::bswap<BRSZ>(&arr[1495], &arr[1723]);
		core::bswap<BRSZ>(&arr[1503], &arr[1979]);
		core::bswap<BRSZ>(&arr[1511], &arr[1659]);
		core::bswap<BRSZ>(&arr[1519], &arr[1915]);
		core::bswap<BRSZ>(&arr[1527], &arr[1787]);
		core::bswap<BRSZ>(&arr[1535], &arr[2043]);
		core::bswap<BRSZ>(&arr[1551], &arr[1799]);
		core::bswap<BRSZ>(&arr[1559], &arr[1671]);
		core::bswap<BRSZ>(&arr[1567], &arr[1927]);
		core::bswap<BRSZ>(&arr[1575], &arr[1607]);
		core::bswap<BRSZ>(&arr[1583], &arr[1863]);
		core::bswap<BRSZ>(&arr[1591], &arr[1735]);
		core::bswap<BRSZ>(&arr[1599], &arr[1991]);
		core::bswap<BRSZ>(&arr[1615], &arr[1831]);
		core::bswap<BRSZ>(&arr[1623], &arr[1703]);
		core::bswap<BRSZ>(&arr[1631], &arr[1959]);
		core::bswap<BRSZ>(&arr[1647], &arr[1895]);
		core::bswap<BRSZ>(&arr[1655], &arr[1767]);
		core::bswap<BRSZ>(&arr[1663], &arr[2023]);
		core::bswap<BRSZ>(&arr[1679], &arr[1815]);
		core::bswap<BRSZ>(&arr[1695], &arr[1943]);
		core::bswap<BRSZ>(&arr[1711], &arr[1879]);
		core::bswap<BRSZ>(&arr[1719], &arr[1751]);
		core::bswap<BRSZ>(&arr[1727], &arr[2007]);
		core::bswap<BRSZ>(&arr[1743], &arr[1847]);
		core::bswap<BRSZ>(&arr[1759], &arr[1975]);
		core::bswap<BRSZ>(&arr[1775], &arr[1911]);
		core::bswap<BRSZ>(&arr[1791], &arr[2039]);
		core::bswap<BRSZ>(&arr[1823], &arr[1935]);
		core::bswap<BRSZ>(&arr[1839], &arr[1871]);
		core::bswap<BRSZ>(&arr[1855], &arr[1999]);
		core::bswap<BRSZ>(&arr[1887], &arr[1967]);
		core::bswap<BRSZ>(&arr[1919], &arr[2031]);
		core::bswap<BRSZ>(&arr[1983], &arr[2015]);
	return;
	default:
		{
			register size_t j=1;
			for (register size_t i=1; i<n; i+=2)
			{
				if (j > i)
				{
					core::bswap<BRSZ>( &arr[i], &arr[j] );
				}
				register size_t m = size;
				while (m >= 2 && j > m)
				{
					j -=  m;
					m >>= 1;
				}
				j += m;
			}
		}
	}
}
